home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / cpphtp2 / code.jar / code / ch15 / fig15_09.txt < prev    next >
Text File  |  1998-02-27  |  2KB  |  60 lines

  1. 1   // Fig. 15.9: stack.h
  2. 2   // Stack class template definition
  3. 3   // Derived from class List
  4. 4   #ifndef STACK_H
  5. 5   #define STACK_H
  6. 6   
  7. 7   #include "list.h"
  8. 8   
  9. 9   template< class STACKTYPE >
  10. 10  class Stack : private List< STACKTYPE > {
  11. 11  public:
  12. 12     void push( const STACKTYPE &d ) { insertAtFront( d ); }
  13. 13     bool pop( STACKTYPE &d ) { return removeFromFront( d ); }
  14. 14     bool isStackEmpty() const { return isEmpty(); }
  15. 15     void printStack() const { print(); }
  16. 16  };
  17. 17  
  18. 18  #endif
  19. 19  
  20. 20  
  21. 21  // Fig. 15.9: fig15_09.cpp
  22. 22  // Driver to test the template Stack class
  23. 23  #include <iostream.h>
  24. 24  #include "stack.h"
  25. 25  
  26. 26  int main()
  27. 27  {
  28. 28     Stack< int > intStack;
  29. 29     int popInteger;
  30. 30     cout << "processing an integer Stack" << endl;
  31. 31  
  32. 32     for ( int i = 0; i < 4; i++ ) {
  33. 33        intStack.push( i );
  34. 34        intStack.printStack();
  35. 35     }
  36. 36  
  37. 37     while ( !intStack.isStackEmpty() ) {
  38. 38        intStack.pop( popInteger );
  39. 39        cout << popInteger << " popped from stack" << endl;
  40. 40        intStack.printStack();
  41. 41     }
  42. 42  
  43. 43     Stack< double > doubleStack;
  44. 44     double val = 1.1, popdouble;
  45. 45     cout << "processing a double Stack" << endl;
  46. 46  
  47. 47     for ( i = 0; i < 4; i++ ) {
  48. 48        doubleStack.push( val );
  49. 49        doubleStack.printStack();
  50. 50        val += 1.1;
  51. 51     }
  52. 52  
  53. 53     while ( !doubleStack.isStackEmpty() ) {
  54. 54        doubleStack.pop( popdouble );
  55. 55        cout << popdouble << " popped from stack" << endl;
  56. 56        doubleStack.printStack();
  57. 57     }
  58. 58     return 0;
  59. 59  }
  60.